#ifndef __EndGameState_h__
#define __EndGameState_h__

#include <Ogre.h>
#include <OIS/OIS.h>

#include <GameState.h>

enum EndType {Win, Fail};

class EndGameState: public Ogre::Singleton<EndGameState>, public GameState
{
  public:
    EndGameState() {}

    void enter();
    void exit();
    void pause();
    void resume();

    void keyPressed(const OIS::KeyEvent&);
    void keyReleased(const OIS::KeyEvent&);

    void mouseMoved(const OIS::MouseEvent&);
    void mousePressed(const OIS::MouseEvent&, OIS::MouseButtonID);
    void mouseReleased(const OIS::MouseEvent&, OIS::MouseButtonID);

    bool frameStarted(const Ogre::FrameEvent&);
    bool frameEnded(const Ogre::FrameEvent&);

    void setType(const EndType);

    // Heredados de Ogre::Singleton.
    static EndGameState& getSingleton();
    static EndGameState* getSingletonPtr();

  protected:
    Ogre::OverlayManager* _overlayMgr;

    bool _exitGame;
    EndType _endType;
};

#endif
